/**
 * Person类用于表示一个人的基本信息
 * 包含姓名和年龄属性，以及打招呼的方法
 */
class Person {
    public name: string; // 公共属性
    private _age: number;  // 私有属性
    protected  sex:string ; // 保护属性
    /**
     * 构造函数，用于创建Person实例
     * @param name 姓名
     * @param age 年龄
     */
    constructor(name: string, age: number, sex:string) {
        this.name = name;
        this._age = age;
        this.sex = sex;
    }

    /**
     * 打招呼方法，输出问候语
     */
    sayHello() {
        console.log(`大家好，我是${this.name},今年${this._age}岁`);
    }
    userInfo(){
        console.log(`大家好，我是${this.name},今年${this._age}岁,性别${this.sex}`);
    }
}

// 创建Person对象实例
let p = new Person("李四", 18, "男");

// 获取并输出对象属性
console.log(p.name);
// console.log(p._age); // 类的外部不能访问被访问的私有属性
// console.log(p.sex) // 访问保护属性
// 调用对象方法
// p.sayHello();

class Student extends Person {
    constructor(name: string, _age: number, sex:string) {
        super(name, _age,sex);
        this.name = name;
        // this._age = _age; // 子类中不能访问父类的私有属性
    }

    study() {
        // console.log(`大家好，我是${this.name}`);
        console.log(`大家好，我是${this.name},性别${this.sex}`);
        // console.log(`大家好，我是${this.name},今年${this._age}岁`);
    }
}

// let s = new Student("张三", 18);
// s.study();
